package com.fram.service.api.v1;

import java.util.List;

import com.fram.bean.api.order.request.CommentScoreRequest;
import com.fram.bean.api.order.request.GoodsCreateOrderRequest;
import com.fram.bean.api.order.request.OrderApplyRefundRequest;
import com.fram.bean.api.order.request.OrderMyCommentRequest;
import com.fram.bean.api.order.request.OrderRevokeRefundRequest;
import com.fram.bean.api.order.request.OrderSearchRequest;
import com.fram.bean.api.order.request.ShopCartCreateOrderRequest;
import com.fram.bean.api.order.response.OrderCreateResponse;
import com.fram.bean.api.order.response.OrderDetailResponse;
import com.fram.bean.api.order.response.OrderMyCommentResponse;
import com.fram.bean.api.order.response.OrderSearchResponse;
import com.fram.bean.api.order.response.OrderStatusNumberResponse;
import com.fram.bean.sys.PageBean;
import com.fram.bean.sys.pay.PayResultMsg;
import com.fram.common.exception.ProAffairException;
import com.fram.entity.OrderRefund;
import com.github.pagehelper.PageInfo;

public interface OrderService {

	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 上午10:17:48 @版本：V1.0 @description：-> 购物车订单生成
	 */
	public OrderCreateResponse shopCartCreateOrder(ShopCartCreateOrderRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 下午2:51:45 @版本：V1.0 @description：-> 商品直接生成订单
	 */
	public OrderCreateResponse goodsCreateOrder(GoodsCreateOrderRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 下午3:36:19 @版本：V1.0 @description：-> 订单详情
	 */
	public OrderDetailResponse orderDetail(String orderNumber, Long userId, Long orderId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月4日 下午4:20:14 @版本：V1.0 @description：-> 生成支付需要的数据
	 */
	public Object pay(String orderNumber, Long userId, Integer payType, Integer source) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 上午10:03:51 @版本：V1.0 @description：-> 处理支付的回调
	 */
	public void dealPayNotify(PayResultMsg payResultMsg) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 上午11:37:08 @版本：V1.0 @description：-> 过期订单取消
	 */
	public void invalidOrderCancel();

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 下午4:07:57 @版本：V1.0 @description：-> 订单查询
	 */
	public PageInfo<OrderSearchResponse> orderListForApi(PageBean<OrderSearchRequest> request)
			throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月5日 下午5:20:35 @版本：V1.0 @description：-> 修改订单为删除
	 */
	public void updateOrderByIsdelete(List<Long> orderIds) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月6日 上午9:29:06 @版本：V1.0 @description：-> 取消订单
	 */
	public void updateOrderByCancel(Long orderId, Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月6日 上午9:30:13 @版本：V1.0 @description：-> 确认收货
	 */
	public void confirmReceivingGoods(Long orderId, Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月9日 下午2:20:51 @版本：V1.0 @description：-> 获取用户订单每个状态的数量
	 */
	public List<OrderStatusNumberResponse> getOrderStatusNumber(Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月20日 上午10:56:54 @版本：V1.0 @description：-> 申请退款
	 */
	public OrderDetailResponse applyRefund(OrderApplyRefundRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月27日 上午9:55:24 @版本：V1.0 @description：-> 撤销退款
	 */
	public void revokeRefund(OrderRevokeRefundRequest request) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年5月27日 下午2:48:39 @版本：V1.0 @description：-> 订单评论+打分
	 */
	public void orderCommentScore(List<CommentScoreRequest> request, Long userId) throws ProAffairException;

	/**
	 * @作者：陳曉鬆 @时间：2020年6月3日 上午10:47:01 @版本：V1.0 @description：-> 我的订单评论
	 */
	public PageInfo<OrderMyCommentResponse> myComment(PageBean<OrderMyCommentRequest> request)
			throws ProAffairException;
	
	/**退款  退货 详情**/
	public OrderRefund getRefund(Long mainOrderId)throws ProAffairException;

}
